<?php

namespace app\logic\push;

class PushMessage extends MiPush
{
    public function __construct(array $arr_config)
    {
        parent::__construct($arr_config);
    }

    /**
     * 系统消息(推送给所有人)
     * @param string $str_platform 客户端 all-所有 ios-苹果端 android-安卓端
     * @param string $str_title 标题
     * @param string $str_desc 描述
     * @param string $json_params 数据
     * @param int $int_long_time_to_live 如果用户离线，设置消息在服务器保存的时间，单位：ms。服务器默认最长保留两周。
     * @param int $int_long_time_to_send 定时发送消息。timeToSend是用自1970年1月1日以来00:00:00.0 UTC时间表示（以毫秒为单位的时间）。注：仅支持七天内的定时消息。
     * @return bool
     */
    public function sendToAll($str_platform, $str_title, $str_desc, $json_params, $int_long_time_to_send, $int_long_time_to_live = 864000000)
    {
        $arr_android_result['code'] = -1;

        $arr_ios_result['code'] = -1;

        switch ($str_platform) {
            case 'all':
                $arr_android_result = $this->android([], $str_title, $str_desc, $json_params, 'all', $int_long_time_to_live, $int_long_time_to_send);

                $arr_ios_result = $this->ios([], $str_desc, $json_params, 'all', $int_long_time_to_live, $int_long_time_to_send);
                break;
            case 'ios':
                $arr_ios_result = $this->ios([], $str_desc, $json_params, 'all', $int_long_time_to_live, $int_long_time_to_send);

                break;
            case 'android':
                $arr_android_result = $this->android([], $str_title, $str_desc, $json_params, 'all', $int_long_time_to_live, $int_long_time_to_send);

                break;
            default:
                return false;
        }

        if (($arr_android_result['code'] == 0) || $arr_ios_result['code'] == 0) {
            return true;
        }

        return false;
    }

    /**
     * 发送消息给用户（发送给多个用户，且在消息栏显示）
     * @param string $str_platform 客户端 all-所有 ios-苹果端 android-安卓端
     * @param array $arr_passport 用户passport 格式 ['passport值','passport值',...,'passport值','passport值']
     * @param string $str_title 标题
     * @param string $str_desc 描述
     * @param string $json_params 数据
     * @param int $int_long_time_to_send 定时发送消息。timeToSend是用自1970年1月1日以来00:00:00.0 UTC时间表示（以毫秒为单位的时间）。注：仅支持七天内的定时消息。
     * @param int $int_long_time_to_live 如果用户离线，设置消息在服务器保存的时间，单位：ms。服务器默认最长保留两周。
     * @return bool
     */
    public function sendMessageToUser($str_platform, $arr_passport, $str_title, $str_desc, $json_params, $int_long_time_to_send, $int_long_time_to_live = 864000000)
    {
        $arr_alias_list = $arr_passport;

        $arr_android_result['code'] = -1;

        $arr_ios_result['code'] = -1;

        switch ($str_platform) {
            case 'all':
                $arr_android_result = $this->android($arr_alias_list, $str_title, $str_desc, $json_params, 'single', $int_long_time_to_live, $int_long_time_to_send);

                $arr_ios_result = $this->ios($arr_alias_list, $str_desc, $json_params, 'single', $int_long_time_to_live, $int_long_time_to_send);
                break;
            case 'ios':
                $arr_ios_result = $this->ios($arr_alias_list, $str_desc, $json_params, 'single', $int_long_time_to_live, $int_long_time_to_send);
                break;
            case 'android':
                $arr_android_result = $this->android($arr_alias_list, $str_title, $str_desc, $json_params, 'single', $int_long_time_to_live, $int_long_time_to_send);

                break;
            default:
                return false;
        }

        if (($arr_android_result['code'] == 0) || $arr_ios_result['code'] == 0) {
            return true;
        }

        return false;


    }

    /**
     * 数据透传
     * @param array $arr_passport 用户passport 格式 ['passport值','passport值',...,'passport值','passport值']
     * @param string $json_params 数据
     * @param string $str_desc 描述
     * @return bool
     */
    public function dataPassThrough($arr_passport, $json_params, $str_desc)
    {
        $arr_alias_list = $arr_passport;

        $this->androidPassThrough($arr_alias_list, $json_params);

        $this->iosPassThrough($arr_alias_list, $json_params, $str_desc);

        return true;
    }
}